OpenStack APIs

您所在的位置:网站首页 nova skin 下载 OpenStack APIs

OpenStack APIs

2023-09-12 20:08| 来源: 网络整理| 查看: 265

OpenStack APIs¶

为了认证对OpenStack服务的访问,你首先需要向OpenStack认证服务发出携带证书信息的认证请求以获得认证令牌。

证书通常是您的用户名和密码的组合,或者是您的云环境中项目的名称或ID。从你的云管理员那里获得你的用户名,密码和项目信息以便于生成认证令牌。相应地,你可以使用这个令牌来代替用户名和密码进行认证操作。

当你发送API请求时,你需要将令牌信息包含在“X-Auth-Token”的消息头中。如果你要访问多个OpenStack的服务,你必须为每个服务获取一个令牌。令牌的有效性是有时间限制的。当然,令牌也可能因为其它原因而失效。例如,如果用户的角色发生了变化,该用户当前存在的令牌也就会失效。

认证和 API 请求工作流程¶

从云管理员提供的认证服务接入点请求一个认证令牌,以“ref:authenticate”的形式发送一个有效载荷的请求,如果请求成功,服务器将返回一个认证令牌。

发送API请求时,令牌信息包含在“X-Auth-Token”的包头中,使用该令牌发送请求,直到请求的服务完成或者Unauthorized (401)错误出现。

如果Unauthorized (401)错误出现, 重新申请一个令牌。

该部分的实例使用了cURL命令。关于cURL的信息,请参考http://curl.haxx.se/。关于OpenStack APIs的信息,请参考 当前API 版本。

认证¶

The payload of credentials to authenticate contains these parameters:

Credential parameters¶

参数

类型

描述

*用户域*(必需有)

字符串

用户的域

用户名 (必需有)

字符串

用户名。如果您不提供用户名和密码,那么必须提供一个令牌。

密码 (必需有)

字符串

该用户的密码。

*项目域*(可选)

字符串

该项目的域是scope对象的必需部分。

*项目名*(可选)

字符串

项目名。*项目ID*和*项目名*都是可选的。

*项目ID*(可选)

字符串

项目ID。*项目ID*和*项目名*都是可选的。但是伴随着*项目域*这两个属性其中之一是必须有的。这两个属性包含在scope对象下。如果你不知道项目的名称或者ID,发送一个不包含任何scope对象的请求。

在一个运行着认证服务的典型OpenStack环境中,你可以指定你的项目名,用户名和密码进行身份验证。

首先,将你的项目名传递给环境变量``OS_TENANT_NAME``,你的项目域名传递给环境变量``OS_PROJECT_DOMAIN_NAME``,你的用户名传递给环境变量``OS_USERNAME``,你的密码传递给环境变量``OS_PASSWORD``,同时你的用户域名传递给环境变量``OS_USER_DOMAIN_NAME``。

下面例子使用了遵循安装手册安装Ocata。但是,你也可以使用``$OS_AUTH_URL``作为一个环境变量,如果需要改变该URL。

然后,运行cURL命令去请求一个token。

$ curl -v -s -X POST $OS_AUTH_URL/auth/tokens?nocatalog -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"],"password": {"user": {"domain": {"name": "'"$OS_USER_DOMAIN_NAME"'"},"name": "'"$OS_USERNAME"'", "password": "'"$OS_PASSWORD"'"} } }, "scope": { "project": { "domain": { "name": "'"$OS_PROJECT_DOMAIN_NAME"'" }, "name": "'"$OS_PROJECT_NAME"'" } } }}' \ | python -m json.tool

如果请求成功是,将会返回``Created (201)``响应码,同时在``X-Subject-Token``响应头中包含着token值。该请求头伴随着一个响应体,包含一个``token``类型的对象,该对象包含token过期日期和时间,以``”expires_at”:”datetime”``的形式,还包含其它属性。

下面的例子展示了一个成功的响应:

* Trying 192.168.56.101... * Connected to controller (192.168.56.101) port 5000 (#0) > POST /v3/auth/tokens?nocatalog HTTP/1.1 > Host: controller:5000 > User-Agent: curl/7.47.0 > Accept: */* > Content-Type: application/json > Content-Length: 226 > } [226 bytes data] * upload completely sent off: 226 out of 226 bytes < HTTP/1.1 201 Created < Date: Fri, 26 May 2017 06:48:58 GMT < Server: Apache/2.4.18 (Ubuntu) < X-Subject-Token: gAAAAABZJ8_a7aiq1SnOhbNw8vFb5WZChcvWdzzUAFzhiB99BHrjdSGai--_-JstU3WazsFXmRHNbD07qOQKTp5Sen2R_b9csaDkU49VXqSaJ0jh2nAlwJkys8aazz2oa3xSeUVe3Ndv_HRiW23-iWTr6jquK_AXdhRX7nvM4lmVTrxXFpelnJQ < Vary: X-Auth-Token < X-Distribution: Ubuntu < x-openstack-request-id: req-0e9239ec-104b-40e0-a337-dca91fb24387 < Content-Length: 521 < Content-Type: application/json


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3